package com.sleep.springbootdemo.controller;

import com.sleep.springbootdemo.param.LoginParam;
import com.sleep.springbootdemo.service.DemoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * 第一步，创建 controller 层，确定接口 /demo/login
 * 使用 @RestController 将本类表示为 controller 类，并注入到 spring 容器中
 * 第二步，创建 service 层和它的 impl 实现层
 * 第三步，创建 pojo 层，将类中的变量与数据库表中字段一一对应
 * 第四步，创建 param 层，用来承载前端传来的数据
 * 第五步，调用 service 层的方法处理请求
 *
 * @author Sleep-6000
 * @date 2022/8/5
 */
@RestController
@RequestMapping("demo")
public class DemoController {

    /**
     * 使用 @Autowired 注解将 DemoService 的实体类对象注入
     */
    @Autowired
    private DemoService demoService;

    /**
     * 登录方法，调用 service 的登录方法处理登录请求
     * 使用 @RequestBody 注解将前端传来的 JSON 格式的参数转化为 LoginParam 的实体类
     *
     * @param loginParam 登录参数
     * @return 结果
     */
    @PostMapping("login")
    public int login(@RequestBody LoginParam loginParam) {
        return demoService.login(loginParam);
    }

    /**
     * 注册方法
     *
     * @param loginParam 注册参数
     * @return 结果
     */
    @PostMapping("register")
    public int register(@RequestBody LoginParam loginParam) {
        return demoService.register(loginParam);
    }

    /**
     * 获取用户数量
     *
     * @return 用户数量
     */
    @GetMapping("num")
    public int getNum() {
        return demoService.getNum();
    }
}
